home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / man / cat.1 / perldata.1 < prev    next >
Text File  |  1995-07-25  |  26KB  |  595 lines

  1.  
  2.  
  3.  
  4.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           perldata - Perl data structures
  10.  
  11.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.           VVVVaaaarrrriiiiaaaabbbblllleeee nnnnaaaammmmeeeessss
  13.  
  14.           Perl has three data structures: scalars, arrays of scalars,
  15.           and associative arrays of scalars, known as "hashes".
  16.           Normal arrays are indexed by number, starting with 0.
  17.           (Negative subscripts count from the end.)  Hash arrays are
  18.           indexed by string.
  19.  
  20.           Scalar values are always named with '$', even when referring
  21.           to a scalar that is part of an array.  It works like the
  22.           English word "the".  Thus we have:
  23.  
  24.               $days               # the simple scalar value "days"
  25.               $days[28]           # the 29th element of array @days
  26.               $days{'Feb'}        # the 'Feb' value from hash %days
  27.               $#days              # the last index of array @days
  28.  
  29.           but entire arrays or array slices are denoted by '@', which
  30.           works much like the word "these" or "those":
  31.  
  32.               @days               # ($days[0], $days[1],... $days[n])
  33.               @days[3,4,5]        # same as @days[3..5]
  34.               @days{'a','c'}      # same as ($days{'a'},$days{'c'})
  35.  
  36.           and entire hashes are denoted by '%':
  37.  
  38.               %days               # (key1, val1, key2, val2 ...)
  39.  
  40.           In addition, subroutines are named with an initial '&',
  41.           though this is optional when it's otherwise unambiguous
  42.           (just as "do" is often redundant in English).  Symbol table
  43.           entries can be named with an initial '*', but you don't
  44.           really care about that yet.
  45.  
  46.           Every variable type has its own namespace.  You can, without
  47.           fear of conflict, use the same name for a scalar variable,
  48.           an array, or a hash (or, for that matter, a filehandle, a
  49.           subroutine name, or a label).  This means that $foo and @foo
  50.           are two different variables.  It also means that $foo[1] is
  51.           a part of @foo, not a part of $foo.  This may seem a bit
  52.           weird, but that's okay, because it is weird.
  53.  
  54.           Since variable and array references always start with '$',
  55.           '@', or '%', the "reserved" words aren't in fact reserved
  56.           with respect to variable names.  (They ARE reserved with
  57.           respect to labels and filehandles, however, which don't have
  58.           an initial special character.  You can't have a filehandle
  59.           named "log", for instance.  Hint: you could say
  60.  
  61.  
  62.  
  63.      Page 1                                          (printed 6/30/95)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  71.  
  72.  
  73.  
  74.           open(LOG,'logfile') rather than open(log,'logfile').  Using
  75.           uppercase filehandles also improves readability and protects
  76.           you from conflict with future reserved words.)  Case _I_S
  77.           significant--"FOO", "Foo" and "foo" are all different names.
  78.           Names that start with a letter or underscore may also
  79.           contain digits and underscores.
  80.  
  81.           It is possible to replace such an alphanumeric name with an
  82.           expression that returns a reference to an object of that
  83.           type.  For a description of this, see the _p_e_r_l_r_e_f manpage.
  84.  
  85.           Names that start with a digit may only contain more digits.
  86.           Names which do not start with a letter, underscore,  or
  87.           digit are limited to one character, e.g.  "$%" or "$$".
  88.           (Most of these one character names have a predefined
  89.           significance to Perl.  For instance, $$ is the current
  90.           process id.)
  91.  
  92.           CCCCoooonnnntttteeeexxxxtttt
  93.  
  94.           The interpretation of operations and values in Perl
  95.           sometimes depends on the requirements of the context around
  96.           the operation or value.  There are two major contexts:
  97.           scalar and list.  Certain operations return list values in
  98.           contexts wanting a list, and scalar values otherwise.  (If
  99.           this is true of an operation it will be mentioned in the
  100.           documentation for that operation.)  In other words, Perl
  101.           overloads certain operations based on whether the expected
  102.           return value is singular or plural.  (Some words in English
  103.           work this way, like "fish" and "sheep".)
  104.  
  105.           In a reciprocal fashion, an operation provides either a
  106.           scalar or a list context to each of its arguments.  For
  107.           example, if you say
  108.  
  109.               int( <STDIN> )
  110.  
  111.           the integer operation provides a scalar context for the
  112.           <STDIN> operator, which responds by reading one line from
  113.           STDIN and passing it back to the integer operation, which
  114.           will then find the integer value of that line and return
  115.           that.  If, on the other hand, you say
  116.  
  117.               sort( <STDIN> )
  118.  
  119.           then the sort operation provides a list context for <STDIN>,
  120.           which will proceed to read every line available up to the
  121.           end of file, and pass that list of lines back to the sort
  122.           routine, which will then sort those lines and return them as
  123.           a list to whatever the context of the sort was.
  124.  
  125.           Assignment is a little bit special in that it uses its left
  126.  
  127.  
  128.  
  129.      Page 2                                          (printed 6/30/95)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  137.  
  138.  
  139.  
  140.           argument to determine the context for the right argument.
  141.           Assignment to a scalar evaluates the righthand side in a
  142.           scalar context, while assignment to an array or array slice
  143.           evaluates the righthand side in a list context.  Assignment
  144.           to a list also evaluates the righthand side in a list
  145.           context.
  146.  
  147.           User defined subroutines may choose to care whether they are
  148.           being called in a scalar or list context, but most
  149.           subroutines do not need to care, because scalars are
  150.           automatically interpolated into lists.  See the wantarray
  151.           entry in the _p_e_r_l_f_u_n_c manpage.
  152.  
  153.           SSSSccccaaaallllaaaarrrr vvvvaaaalllluuuueeeessss
  154.  
  155.           Scalar variables may contain various kinds of singular data,
  156.           such as numbers, strings and references.  In general,
  157.           conversion from one form to another is transparent.  (A
  158.           scalar may not contain multiple values, but may contain a
  159.           reference to an array or hash containing multiple values.)
  160.           Because of the automatic conversion of scalars, operations
  161.           and functions that return scalars don't need to care (and,
  162.           in fact, can't care) whether the context is looking for a
  163.           string or a number.
  164.  
  165.           A scalar value is interpreted as TRUE in the Boolean sense
  166.           if it is not the null string or the number 0 (or its string
  167.           equivalent, "0").  The Boolean context is just a special
  168.           kind of scalar context.
  169.  
  170.           There are actually two varieties of null scalars: defined
  171.           and undefined.  Undefined null scalars are returned when
  172.           there is no real value for something, such as when there was
  173.           an error, or at end of file, or when you refer to an
  174.           uninitialized variable or element of an array.  An undefined
  175.           null scalar may become defined the first time you use it as
  176.           if it were defined, but prior to that you can use the
  177.           _d_e_f_i_n_e_d() operator to determine whether the value is defined
  178.           or not.
  179.  
  180.           The length of an array is a scalar value.  You may find the
  181.           length of array @days by evaluating $#days, as in ccccsssshhhh.
  182.           (Actually, it's not the length of the array, it's the
  183.           subscript of the last element, since there is (ordinarily) a
  184.           0th element.)  Assigning to $#days changes the length of the
  185.           array.  Shortening an array by this method destroys
  186.           intervening values.  Lengthening an array that was
  187.           previously shortened _N_O _L_O_N_G_E_R recovers the values that were
  188.           in those elements.  (It used to in Perl 4, but we had to
  189.           break this make to make sure destructors were called when
  190.           expected.)  You can also gain some measure of efficiency by
  191.           preextending an array that is going to get big.  (You can
  192.  
  193.  
  194.  
  195.      Page 3                                          (printed 6/30/95)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  203.  
  204.  
  205.  
  206.           also extend an array by assigning to an element that is off
  207.           the end of the array.) You can truncate an array down to
  208.           nothing by assigning the null list () to it.  The following
  209.           are equivalent:
  210.  
  211.               @whatever = ();
  212.               $#whatever = $[ - 1;
  213.  
  214.           If you evaluate a named array in a scalar context, it
  215.           returns the length of the array.  (Note that this is not
  216.           true of lists, which return the last value, like the C comma
  217.           operator.)  The following is always true:
  218.  
  219.               scalar(@whatever) == $#whatever - $[ + 1;
  220.  
  221.           Version 5 of Perl changed the semantics of $[: files that
  222.           don't set the value of $[ no longer need to worry about
  223.           whether another file changed its value.  (In other words,
  224.           use of $[ is deprecated.) So in general you can just assume
  225.           that
  226.  
  227.               scalar(@whatever) == $#whatever + 1;
  228.  
  229.           If you evaluate a hash in a scalar context, it returns a
  230.           value which is true if and only if the hash contains any
  231.           key/value pairs.  (If there are any key/value pairs, the
  232.           value returned is a string consisting of the number of used
  233.           buckets and the number of allocated buckets, separated by a
  234.           slash.  This is pretty much only useful to find out whether
  235.           Perl's (compiled in) hashing algorithm is performing poorly
  236.           on your data set.  For example, you stick 10,000 things in a
  237.           hash, but evaluating %HASH in scalar context reveals "1/16",
  238.           which means only one out of sixteen buckets has been
  239.           touched, and presumably contains all 10,000 of your items.
  240.           This isn't supposed to happen.)
  241.  
  242.           SSSSccccaaaallllaaaarrrr vvvvaaaalllluuuueeee ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  243.  
  244.           Numeric literals are specified in any of the customary
  245.           floating point or integer formats:
  246.  
  247.               12345
  248.               12345.67
  249.               .23E-10
  250.               0xffff              # hex
  251.               0377                # octal
  252.               4_294_967_296       # underline for legibility
  253.  
  254.           String literals are delimited by either single or double
  255.           quotes.  They work much like shell quotes:  double-quoted
  256.           string literals are subject to backslash and variable
  257.           substitution; single-quoted strings are not (except for "\'"
  258.  
  259.  
  260.  
  261.      Page 4                                          (printed 6/30/95)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  269.  
  270.  
  271.  
  272.           and "\\").  The usual Unix backslash rules apply for making
  273.           characters such as newline, tab, etc., as well as some more
  274.           exotic forms.  See the qq entry in the _p_e_r_l_o_p manpage for a
  275.           list.
  276.  
  277.           You can also embed newlines directly in your strings, i.e.
  278.           they can end on a different line than they begin.  This is
  279.           nice, but if you forget your trailing quote, the error will
  280.           not be reported until Perl finds another line containing the
  281.           quote character, which may be much further on in the script.
  282.           Variable substitution inside strings is limited to scalar
  283.           variables, arrays, and array slices.  (In other words,
  284.           identifiers beginning with $ or @, followed by an optional
  285.           bracketed expression as a subscript.)  The following code
  286.           segment prints out "The price is $100."
  287.  
  288.               $Price = '$100';    # not interpreted
  289.               print "The price is $Price.\n";     # interpreted
  290.  
  291.           As in some shells, you can put curly brackets around the
  292.           identifier to delimit it from following alphanumerics.  Also
  293.           note that a single-quoted string must be separated from a
  294.           preceding word by a space, since single quote is a valid
  295.           (though discouraged) character in an identifier (see the
  296.           Packages entry in the _p_e_r_l_m_o_d manpage).
  297.  
  298.           Two special literals are __LINE__ and __FILE__, which
  299.           represent the current line number and filename at that point
  300.           in your program.  They may only be used as separate tokens;
  301.           they will not be interpolated into strings.  In addition,
  302.           the token __END__ may be used to indicate the logical end of
  303.           the script before the actual end of file.  Any following
  304.           text is ignored, but may be read via the DATA filehandle.
  305.           (The DATA filehandle may read data only from the main
  306.           script, but not from any required file or evaluated string.)
  307.           The two control characters ^D and ^Z are synonyms for
  308.           __END__.
  309.  
  310.           A word that doesn't have any other interpretation in the
  311.           grammar will be treated as if it were a quoted string.
  312.           These are known as "barewords".  As with filehandles and
  313.           labels, a bareword that consists entirely of lowercase
  314.           letters risks conflict with future reserved words, and if
  315.           you use the ----wwww switch, Perl will warn you about any such
  316.           words.  Some people may wish to outlaw barewords entirely.
  317.           If you say
  318.  
  319.               use strict 'subs';
  320.  
  321.           then any bareword that would NOT be interpreted as a
  322.           subroutine call produces a compile-time error instead.  The
  323.           restriction lasts to the end of the enclosing block.  An
  324.  
  325.  
  326.  
  327.      Page 5                                          (printed 6/30/95)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  335.  
  336.  
  337.  
  338.           inner block may countermand this by saying no strict 'subs'.
  339.  
  340.           Array variables are interpolated into double-quoted strings
  341.           by joining all the elements of the array with the delimiter
  342.           specified in the $" variable, space by default.  The
  343.           following are equivalent:
  344.  
  345.               $temp = join($",@ARGV);
  346.               system "echo $temp";
  347.  
  348.               system "echo @ARGV";
  349.  
  350.           Within search patterns (which also undergo double-quotish
  351.           substitution) there is a bad ambiguity:  Is /$foo[bar]/ to
  352.           be interpreted as /${foo}[bar]/ (where [bar] is a character
  353.           class for the regular expression) or as /${foo[bar]}/ (where
  354.           [bar] is the subscript to array @foo)?  If @foo doesn't
  355.           otherwise exist, then it's obviously a character class.  If
  356.           @foo exists, Perl takes a good guess about [bar], and is
  357.           almost always right.  If it does guess wrong, or if you're
  358.           just plain paranoid, you can force the correct
  359.           interpretation with curly brackets as above.
  360.  
  361.           A line-oriented form of quoting is based on the shell
  362.           "here-doc" syntax.  Following a << you specify a string to
  363.           terminate the quoted material, and all lines following the
  364.           current line down to the terminating string are the value of
  365.           the item.  The terminating string may be either an
  366.           identifier (a word), or some quoted text.  If quoted, the
  367.           type of quotes you use determines the treatment of the text,
  368.           just as in regular quoting.  An unquoted identifier works
  369.           like double quotes.  There must be no space between the <<
  370.           and the identifier.  (If you put a space it will be treated
  371.           as a null identifier, which is valid, and matches the first
  372.           blank line--see the Merry Christmas example below.)  The
  373.           terminating string must appear by itself (unquoted and with
  374.           no surrounding whitespace) on the terminating line.
  375.  
  376.                   print <<EOF;    # same as above
  377.               The price is $Price.
  378.               EOF
  379.  
  380.                   print <<"EOF";  # same as above
  381.               The price is $Price.
  382.               EOF
  383.  
  384.                   print << x 10;  # Legal but discouraged.  Use <<"".
  385.               Merry Christmas!
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.      Page 6                                          (printed 6/30/95)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  401.  
  402.  
  403.  
  404.                   print <<`EOC`;  # execute commands
  405.               echo hi there
  406.               echo lo there
  407.               EOC
  408.  
  409.                   print <<"foo", <<"bar"; # you can stack them
  410.               I said foo.
  411.               foo
  412.               I said bar.
  413.               bar
  414.  
  415.                   myfunc(<<"THIS", 23, <<'THAT'');
  416.               Here's a line
  417.               or two.
  418.               THIS
  419.               and here another.
  420.               THAT
  421.  
  422.           Just don't forget that you have to put a semicolon on the
  423.           end to finish the statement, as Perl doesn't know you're not
  424.           going to try to do this:
  425.  
  426.                   print <<ABC
  427.               179231
  428.               ABC
  429.                   + 20;
  430.  
  431.  
  432.           LLLLiiiisssstttt vvvvaaaalllluuuueeee ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  433.  
  434.           List values are denoted by separating individual values by
  435.           commas (and enclosing the list in parentheses where
  436.           precedence requires it):
  437.  
  438.               (LIST)
  439.  
  440.           In a context not requiring an list value, the value of the
  441.           list literal is the value of the final element, as with the
  442.           C comma operator.  For example,
  443.  
  444.               @foo = ('cc', '-E', $bar);
  445.  
  446.           assigns the entire list value to array foo, but
  447.  
  448.               $foo = ('cc', '-E', $bar);
  449.  
  450.           assigns the value of variable bar to variable foo.  Note
  451.           that the value of an actual array in a scalar context is the
  452.           length of the array; the following assigns to $foo the value
  453.           3:
  454.  
  455.  
  456.  
  457.  
  458.  
  459.      Page 7                                          (printed 6/30/95)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  467.  
  468.  
  469.  
  470.               @foo = ('cc', '-E', $bar);
  471.               $foo = @foo;                # $foo gets 3
  472.  
  473.           You may have an optional comma before the closing
  474.           parenthesis of an list literal, so that you can say:
  475.  
  476.               @foo = (
  477.                   1,
  478.                   2,
  479.                   3,
  480.               );
  481.  
  482.           LISTs do automatic interpolation of sublists.  That is, when
  483.           a LIST is evaluated, each element of the list is evaluated
  484.           in a list context, and the resulting list value is
  485.           interpolated into LIST just as if each individual element
  486.           were a member of LIST.  Thus arrays lose their identity in a
  487.           LIST--the list
  488.  
  489.               (@foo,@bar,&SomeSub)
  490.  
  491.           contains all the elements of @foo followed by all the
  492.           elements of @bar, followed by all the elements returned by
  493.           the subroutine named SomeSub.  To make a list reference that
  494.           does _N_O_T interpolate, see the _p_e_r_l_r_e_f manpage.
  495.  
  496.           The null list is represented by ().  Interpolating it in a
  497.           list has no effect.  Thus ((),(),()) is equivalent to ().
  498.           Similarly, interpolating an array with no elements is the
  499.           same as if no array had been interpolated at that point.
  500.  
  501.           A list value may also be subscripted like a normal array.
  502.           You must put the list in parentheses to avoid ambiguity.
  503.           Examples:
  504.  
  505.               # Stat returns list value.
  506.               $time = (stat($file))[8];
  507.  
  508.               # Find a hex digit.
  509.               $hexdigit = ('a','b','c','d','e','f')[$digit-10];
  510.  
  511.               # A "reverse comma operator".
  512.               return (pop(@foo),pop(@foo))[0];
  513.  
  514.           Lists may be assigned to if and only if each element of the
  515.           list is legal to assign to:
  516.  
  517.               ($a, $b, $c) = (1, 2, 3);
  518.  
  519.               ($map{'red'}, $map{'blue'}, $map{'green'}) = (0x00f, 0x0f0, 0xf00);
  520.  
  521.           The final element may be an array or a hash:
  522.  
  523.  
  524.  
  525.      Page 8                                          (printed 6/30/95)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((RRRReeeelllleeeeaaaasssseeee 0000....0000 PPPPaaaattttcccchhhhlllleeeevvvveeeellll 00000000)))) PPPPEEEERRRRLLLLDDDDAAAATTTTAAAA((((1111))))
  533.  
  534.  
  535.  
  536.               ($a, $b, @rest) = split;
  537.               local($a, $b, %rest) = @_;
  538.  
  539.           You can actually put an array anywhere in the list, but the
  540.           first array in the list will soak up all the values, and
  541.           anything after it will get a null value.  This may be useful
  542.           in a _l_o_c_a_l() or _m_y().
  543.  
  544.           A hash literal contains pairs of values to be interpreted as
  545.           a key and a value:
  546.  
  547.               # same as map assignment above
  548.               %map = ('red',0x00f,'blue',0x0f0,'green',0xf00);
  549.  
  550.           It is often more readable to use the => operator between
  551.           key/value pairs (the => operator is actually nothing more
  552.           than a more visually distinctive synonym for a comma):
  553.  
  554.               %map = (
  555.                        'red'   => 0x00f,
  556.                        'blue'  => 0x0f0,
  557.                        'green' => 0xf00,
  558.                      );
  559.  
  560.           Array assignment in a scalar context returns the number of
  561.           elements produced by the expression on the right side of the
  562.           assignment:
  563.  
  564.               $x = (($foo,$bar) = (3,2,1));       # set $x to 3, not 2
  565.  
  566.           This is very handy when you want to do a list assignment in
  567.           a Boolean context, since most list functions return a null
  568.           list when finished, which when assigned produces a 0, which
  569.           is interpreted as FALSE.
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.      Page 9                                          (printed 6/30/95)
  592.  
  593.  
  594.  
  595.